package ar.com.larreta.colegio.procesos.pasos;

import java.util.ArrayList;
import java.util.List;

import ar.com.larreta.colegio.entidades.Obligacion;
import ar.com.larreta.colegio.intercambio.client.Pago;
import ar.com.larreta.comunes.Transformador;
import ar.com.larreta.excepciones.Excepcion;
import ar.com.larreta.intercambio.client.ArchivoGenerado;
import ar.com.larreta.procesos.AdministradorDeArchivosDescargados;
import ar.com.larreta.procesos.ArchivoDescargable;
import ar.com.larreta.procesos.Entrada;
import ar.com.larreta.procesos.PasoConDAO;
import ar.com.larreta.reportes.UtilidadesReportes;

public class GenerarRecibo extends PasoConDAO {
	
	public static final String TEMPLATE = "ar/com/larreta/colegio/reportes/recibo.jrxml";
	public static final String TEMPLATE_EXTENDIDO = "ar/com/larreta/colegio/reportes/reciboExtendido.jrxml";
	public static final String RECIBO = "recibo";
	public static final String ARCHIVO_GENERADO = "archivoGenerado";

	@Override
	protected void accion() throws Excepcion {
		String tmp = TEMPLATE;
		List pagos = new ArrayList();
		Transformador transformador = new Transformador();

		
		Pago pago = (Pago) getProceso().getPedido();
		
		ar.com.larreta.colegio.entidades.Pago entidadPago = null;
		if (pago.getId()!=null){
			entidadPago = (ar.com.larreta.colegio.entidades.Pago) getDao().obtener(ar.com.larreta.colegio.entidades.Pago.class, pago.getId());
		} else {
			entidadPago = (ar.com.larreta.colegio.entidades.Pago) ((Entrada)entradas.get(ENTIDAD)).getValor();
		}
		pagos.add(entidadPago);
		
		Obligacion obligacion = (Obligacion) entidadPago.getProducto();
		

		if ((obligacion.getDetalles()!=null) && (obligacion.getDetalles().size()>0)){
			tmp =  TEMPLATE_EXTENDIDO;
		}

		UtilidadesReportes reportes = new UtilidadesReportes(tmp);
		ArchivoDescargable archivoDescargable = reportes.obtenerReporte(RECIBO, UtilidadesReportes.PDF, pagos);
		
		AdministradorDeArchivosDescargados.getInstancia().agregar(archivoDescargable.getId(), archivoDescargable);
		
		getProceso().getRespuestas().put(ARCHIVO_GENERADO, new ArchivoGenerado(archivoDescargable.getId()));
	}

}
